﻿using CarEdge.Infrastructure.Attr;
using CarEdge.Infrastructure.Dto.Response;
using CarEdge.Infrastructure.Dto.Response.Org;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CarEdge.Service.Interface.Org
{
    [Provider_]
    public interface I_Org_EFCore
    {
        /// <summary>
        /// 获取所有部门
        /// </summary>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_DepArtment();
        /// <summary>
        /// 获取所有职务
        /// </summary>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_duty(int page = 1, int limit = 10, string key = "");
        /// <summary>
        /// 获取部门的用户
        /// </summary>
        /// <param name="did"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_DepUser(string id="", int page = 1, int limit = 10, string key = "");
        /// <summary>
        /// 删除职务
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Delete_Duty(IEnumerable<string?>? ids);
        /// <summary>
        /// 禁用/启用 职务
        /// </summary>
        /// <param name="id"></param>
        /// <param name="isban"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Ban_Duty(string id, int isban);
        /// <summary>
        /// 添加职务
        /// </summary>
        /// <param name="name">职务名称</param>
        /// <param name="explain">职务描述</param>
        /// <param name="lv">职务等级</param>
        /// <returns></returns>
        Task<Api_Response_Dto> Add_Duty(string name, string explain, int lv);
        /// <summary>
        /// 获取单个职务详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_Duty_Detail(string id);
        /// <summary>
        /// 禁用/启用 用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Ban_DepUser(User_Org_Response_Dto dto);
        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>

        Task<Api_Response_Dto> Delete_User(User_Org_Response_Dto dto);
        /// <summary>
        /// 修改用户部门
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Update_UserDep(User_Org_Response_Dto dto);
       /// <summary>
       /// 获取部门对应下的职务
       /// </summary>
       /// <param name="depid"></param>
       /// <returns></returns>
        Task<Api_Response_Dto> Get_DepDuty(string uid);
        /// <summary>
        /// 修改用户职务
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Update_UserDuty(User_Org_Response_Dto dto);
        /// <summary>
        /// 获取当前部门的名称和当前部门的所有职务
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_Dept_DutyAll(string id);
        /// <summary>
        /// 根据部门ID获取当前部门所有职务
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_DutyUser(string id);
        /// <summary>
        /// 获取部门的名称
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_DeptName(string id);
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Add_User(User_Response_Dto dto);
        /// <summary>
        /// 添加部门
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Add_Dept(Dept_Add_Response_Dto dto);
        /// <summary>
        /// 部门
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<Api_Response_Dto> Get_DeptNameLV(string id);
        Task<Api_Response_Dto> Get_AddDuty();
        Task<Api_Response_Dto> Get_CheckDuty(string id);
        Task<Api_Response_Dto> update_dept(Dept_Update_Response_Dto dto);
        Task<Api_Response_Dto> update_duty(Duty_Update_Response_Dto dto);



    }
}
